Utilities for safe zero-copy parsing and serialization.
This crate provides utilities which make it easy to perform zero-copy parsing and serialization by allowing zero-copy conversion to/from byte slices.
This is enabled by three core marker traits, each of which can be derived
(e.g., #[derive(FromBytes)]
):
- [
FromBytes
] indicates that a type may safely be converted from an arbitrary byte sequence - [
AsBytes
] indicates that a type may safely be converted to a byte sequence - [
Unaligned
] indicates that a type's alignment requirement is 1
Types which implement a subset of these traits can then be converted to/from byte sequences with little to no runtime overhead.
Note that these traits are ignorant of byte order. For byte order-aware
types, see the [byteorder
] module.